In [1]:
import plotly.express as px
import pandas as pd
import random
import os
import json
import plotly.graph_objects as go
DATA=pd.read_csv(r'C:\Users\MANU\PycharmProjects\ftls_v11-4CLASSES_sensitivity\ftls_events\2019_07_06_T_03_19_53_M71CAL_congiunta\calc_parts\Tab_congiunta_red.csv')
from datetime import datetime, timedelta
DATA['las_tdate'] = pd.to_datetime(DATA['last_date'])
DATA = DATA.dropna(subset=['B_perc'])
DATA['dimo']=0.005
data = pd.DataFrame({'x': DATA['last_date'],
                     'y': DATA['N_step'],
                     'values': DATA['B_perc']})
with open(os.path.join(r'C:\Users\MANU\PycharmProjects\ftls_v11-4CLASSES_sensitivity\ftls_events\2019_07_04_T_17_33_49_M64CAL_congiunta','config', 'main_event.json'), "r") as json_file:
        mainevt_1 = json.load(json_file)

        mainevent_1 = pd.Series(mainevt_1)
        mainevent_1['fulldate'] = datetime(**mainevent_1[['year', 'day', 'month', 'hour', 'minute']].astype(int).to_dict()
                                         ) + timedelta(seconds=mainevent_1.at['second'])
with open(os.path.join(r'C:\Users\MANU\PycharmProjects\ftls_v11-4CLASSES_sensitivity\ftls_events\2019_07_06_T_03_19_53_M71CAL_congiunta','config', 'main_event.json'), "r") as json_file:
        mainevt_2 = json.load(json_file)

        mainevent_2 = pd.Series(mainevt_2)
        mainevent_2['fulldate'] = datetime(**mainevent_2[['year', 'day', 'month', 'hour', 'minute']].astype(int).to_dict()
                                         ) + timedelta(seconds=mainevent_2.at['second'])
In [ ]:
# # Crea uno scatterplot con scala di colori personalizzata (giallo più acceso)
# fig = px.scatter(data, x='x', y='y', color='values',
#                  color_continuous_scale=['red', 'yellow', 'green'],  # Personalizza la scala dei colori
#                  color_continuous_midpoint=100,  # Imposta il valore centrale,
#                  labels={'values': 'Valori'},
#                  )

# # Imposta il titolo del grafico
# fig.update_layout(title='Scatterplot con scala di colori personalizzata')

# # Mostra il grafico
# fig.show()
# fig = go.Figure(data=go.Scatter(x=data['x'], y=data['y'],
#                                marker=dict(size=5, symbol='square', color=data['values'],
#                                            colorscale='RdYlGn', colorbar=dict(title='Values')),
#                                mode='markers'))
# Aggiungi le due linee verticali come tracce separate con nomi
fig.add_trace(go.Scatter(x=[mainevent_1['fulldate'], mainevent_1['fulldate']],
                            y=[100, 100], mode='lines', name='b reference', line=dict(color='black', dash='dash')))


fig.add_shape(
        go.layout.Shape(
            type="line",
            x0=mainevent_2['fulldate'],
            x1=mainevent_2['fulldate'],
            y0=100,
            y1=400,
            line=dict(color="black", width=3, dash='dash'),
            name='Main event'
        )
    )

# Imposta il titolo del grafico
# Mostra la legenda
  # Regola il valore di x per posizionare la colorbar a sinistra

fig.update_layout(
    plot_bgcolor='white',  # Sfondo bianco
    xaxis=dict(showgrid=True, gridcolor='grey', showline=True, linecolor='black', linewidth=2),  # Griglia nera per l'asse x con contorno
    yaxis=dict(showgrid=True, gridcolor='grey', showline=True, linecolor='black', linewidth=2),  # Griglia nera per l'asse y con contorno
    
)
# Mostra il grafico
fig.show()
In [2]:
colorscale = [[0, 'red'], [0.34, 'yellow'], [1, 'green']]

fig = go.Figure(data=go.Scatter(x=data['x'], y=data['y'],
                               marker=dict(size=5, symbol='square', color=data['values'],
                                           colorscale=colorscale, colorbar=dict(title='Valori')),
                               mode='markers', 
                               text=data.apply(lambda row: f'Date={row["x"]}\nN_post={row["y"]}\nb_perc={row["values"]}', axis=1)))

# Imposta il titolo del grafico

# fig.add_trace(go.Scatter(x=[mainevent_1['fulldate'], mainevent_1['fulldate']],
#                             y=[100, 400], mode='lines', line=dict(color='black', dash='dash')))
fig.add_shape(
        go.layout.Shape(
            type="line",
            x0=mainevent_2['fulldate'],
            x1=mainevent_2['fulldate'],
            y0=100,
            y1=420,
            line=dict(color="black", width=3, dash='dash'),
            name='Main event'
        )
    )
fig.add_shape(
        go.layout.Shape(
            type="line",
            x0=mainevent_1['fulldate'],
            x1=mainevent_1['fulldate'],
            y0=100,
            y1=420,
            line=dict(color="black", width=3, dash='dash'),
            name='Main event'
        )
    )
# Mostra il grafico
fig.update_layout(title='Scatterplot con scala di colori personalizzata e quadratini centrata su 100')
fig.update_layout(
    plot_bgcolor='white',  # Sfondo bianco
    xaxis=dict(showgrid=True, gridcolor='grey', showline=True, linecolor='black', linewidth=2),  # Griglia nera per l'asse x con contorno
    yaxis=dict(showgrid=True, gridcolor='grey', showline=True, linecolor='black', linewidth=2)  # Griglia nera per l'asse y con contorno 
)
fig.update_xaxes(range=[mainevent_1['fulldate']- pd.DateOffset(days=0.5), mainevent_2['fulldate'] + pd.DateOffset(days=4.2)]) 
# Mostra il grafico
fig.show()
In [ ]:
fig = go.Figure(data=go.Scatter(x=data['x'], y=data['y'],
                               marker=dict(size=5, symbol='square', color=data['values'],
                                           colorscale='RdYlGn',
                                           colorbar=dict(title='Values')),
                               mode='markers'))

# Imposta il titolo del grafico
fig.update_layout(title='Scatterplot con scala di colori personalizzata e quadratini')
fig.update_layout(
    plot_bgcolor='white',  # Sfondo bianco
    xaxis=dict(showgrid=True, gridcolor='grey', showline=True, linecolor='black', linewidth=2),  # Griglia nera per l'asse x con contorno
    yaxis=dict(showgrid=True, gridcolor='grey', showline=True, linecolor='black', linewidth=2),  # Griglia nera per l'asse y con contorno
    title='Magnitude vs Time'
)

# Personalizza la scala dei colori per centrarla su 100
colorbar = dict(title='Values', tickvals=[0, 100, 200], ticktext=['0', '100', '200'])
fig.update_traces(marker_colorbar=colorbar)

# Mostra il grafico
fig.show()
In [ ]:
 
In [ ]: